package resourceFile
import (
	"geological_data_mgr/models/common"
	"gorm.io/gorm"
	resourceFileModel "geological_data_mgr/models/resourceFile"
	. "geological_data_mgr/utils"
)

// 列出 资源文件
func ListObj(tx ... *gorm.DB)([]resourceFileModel.ResourceFile,error){
	list := []resourceFileModel.ResourceFile{}
	db := GetDb(tx ...).Table("resource_file").Find(&list)
	return list,db.Error
}

/**
* resourceFile数据库操作类 
*/
func CreateObj(resourceFile *resourceFileModel.ResourceFile,tx ... *gorm.DB) (int64,error){
	db := GetDb(tx ...).Create(resourceFile)
	return db.RowsAffected,db.Error
}

//  更新资源文件
func UpdateObj(resourceFile *resourceFileModel.ResourceFile,tx ... *gorm.DB)(int64,error){
	db := GetDb(tx ...).Updates(resourceFile)
	return db.RowsAffected,db.Error
}

//  更新非null字段
func UpdateObjItem(resourceFile *resourceFileModel.ResourceFile,tx ... *gorm.DB)(int64,error){
	db := GetDb(tx ...).UpdateColumns(resourceFile)
	return db.RowsAffected,db.Error
}

//  更新资源文件
func SaveObj(resourceFile *resourceFileModel.ResourceFile,tx ... *gorm.DB)(int64,error){
	db := GetDb(tx ...).Save(resourceFile)
	return db.RowsAffected,db.Error
}


// 根据ID获取资源文件
func GetObjById(token *string,tx ... *gorm.DB)(resourceFileModel.ResourceFile,error){
	resourceFile := resourceFileModel.ResourceFile{Token:token}
	result := resourceFileModel.ResourceFile{}
	db := GetDb(tx ...).Where(&resourceFile).Take(&result)
	return result,db.Error
}
//  用分页方式列出 资源文件
func PageObj(conditions string,order string,curPage int,pageSize int,tx ... *gorm.DB)([]resourceFileModel.ResourceFile,error){
	sql := `select resource_file.ai_report as ai_report,resource_file.checked as checked,resource_file.content as content,resource_file.file_type as file_type,resource_file.name as name,resource_file.nt as nt,resource_file.raw_file as raw_file,resource_file.token as token from resource_file `
	list := []resourceFileModel.ResourceFile{}
	limitAndOffset := MakeLimitOffset(curPage,pageSize)
	db := GetDb(tx ...).Raw(sql + conditions + " " + order + " " + limitAndOffset).Find(&list)
	return list,db.Error
}

func Count4Page(conditions string,tx ... *gorm.DB)(int64,error){
	sql := `select count(*) as Count from resource_file `
	count := common.Count{}
	db := GetDb(tx ...).Raw(sql + conditions).Take(&count)
	return count.Count,db.Error
}

// 根据id删除 资源文件
func DeleteObj(token *string,tx ... *gorm.DB) (int64,error){
	db := GetDb(tx ...).Delete(&resourceFileModel.ResourceFile{Token:token})
	return db.RowsAffected,db.Error
}
